<?php
/**************微信获取token类***********************
 * 
 */
class WeChat{
	private $_appid;
	private $_appsecret;
	private $_token;

	public function __construct($appid,$appsecret,$token){
		$this->_appid=$appid;
		$this->_appsecret=$appsecret;
		$this->_token=$token;
	}
	/********************封装curl方法**********************/
	private function _request($curl,$https=true,$method='get',$data=null){
		//初始化
		$ch=curl_init();
		/**********设置参数*************/
		//设置访问url	
		curl_setopt($ch,CURLOPT_URL,$curl);
		//设置不需要头信息
		curl_setopt($ch,CURLOPT_HEADER,false);
		//只获取页面内容,但不输出
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
		if($https){
			curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//不做服务器认证
			curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//不做客户端认证
		}
		if($method=='post'){
			curl_setopt($ch,CURLOPT_POST,true);//设置传输方式为post方式
			curl_setopt($ch,CURLOPT_POSTFIELDS,$data);//设置post提交的数据
		}
		$str=curl_exec($ch);//执行访问,返回结果
		curl_close($ch);//关闭curl,释放资源.
		return $str;
	}

	/***********************封装微信获取access_token*******************/
	private function _getAccessToken(){
		$file='./accesstoken';
		//如果accesstoken文件存在
		if(file_exists($file)){
			//获取token文件
			$content=file_get_contents($file);
			$content=json_decode($content);
			//判断accesstoken还否过期,如果未过期,则返回token
			if(time()-filemtime($file)<$content->expires_in)
				return $content->access_token;
		}
		//如果文件不存在,或者文件存在已超期,则重新请求token
		$content=_request("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->_appid."&secret=".$this->_appsecret);
		//把获取内容写入文件
		file_put_contents($file,$content);
		//json解码
		$content=json_decode($content);
		return $content->access_token;
	}

}

